In recent years, mobile communication services have expanded and increased in popularity around the world. Many advanced networks offer various wireless mobile communication services for voice calls and data communications. The data communications services, for example, enable surfing the world wide web via a browser on a mobile device and receiving various data (including real-time data) from remote servers. Further, more and more applications on mobile devices require frequent updates of real-time data from various information servers, for example, to communicate various notification messages.
Many applications on mobile devices use existing polling and pulling techniques to obtain data periodically from remote servers. For example, a client device often “pulls” data by requesting data and receiving responsive data communications from a server. A mail client application running on a mobile device connects to a mail server frequently to check for new mails (“polling”) and fetch data if new mail messages are present (“pulling”). However, the polling and pulling techniques have drawbacks, especially on mobile devices (e.g., unnecessary “polling” when no data is available and delayed “pulling” until next “polling” cycle when data is available). As an alternative, mobile devices may receive the various notification messages “pushed” to the mobile devices via a persistent connection maintained through a mobile network between the mobile devices and a push platform. Such “pushing” allows delivery of messages or other data to the mobile devices as data becomes available. Pushing, however, requires the persistent connection be maintained, which is not always possible. For example, a mobile device may be turned off or may have traveled out of range of the mobile network. In these situations, a user still wants to receive any message or other data that might have been delivered to the mobile device during the time period of interruption of the persistent connection.
Hence a need exists for handling messages in a push platform for which delivery failed due to lack of a persistent connection through a network between a mobile device and the network.